import re

def words(text):
  return re.findall('[a-z]+',text.lower())

def sim(text1,text2,method='jaccard'):
  """ Berechnet die Aehnlichkeit zweier Texte.
      Standardmethod zur Berechnung = Jaccard-Index.
      Gibt einen Wert zwischen 0 und 1 zurueck. 
      0 = ueberhaupt nicht aehnlich
      1 = 'identischer' Text
  """
  w1 = words(text1)
  w2 = words(text2)
  if method == 'jaccard':
    durchschnitt = set(w2).intersection(set(w1)) 
    vereinigung = set(w2).union(set(w1))
    if len(vereinigung)>0:
      return  1.0*len(durchschnitt) / len(vereinigung)
    else:
      raise Exception('Leere Vereinigung: %s ' % vereinigung)
  else:
    raise Exception('Falsche Methode %s ' % method)
